import 'dart:convert';

import 'package:shared_preferences/shared_preferences.dart';

class User {
  final String id;
  final String username;
  final String realname;
  final String departId;
  final String email;

  User({
    required this.id,
    required this.username,
    required this.realname,
    required this.departId,
    required this.email,
  });
}

// void loginUser(String username, String password) async {
//   // 假设这是从服务器获取用户信息的API调用
//   final response = await http.post(
//     Uri.parse('https://yourserver.com/api/login'),
//     body: {
//       'username': username,
//       'password': password,
//     },
//   );

//   if (response.statusCode == 200) {
//     final Map<String, dynamic> data = jsonDecode(response.body);
//     // 创建User实例并保存到某处，例如全局变量或数据库中
//     User user = User(
//       id: data['id'],
//       username: data['username'],
//       email: data['email'],
//       token: data['token'], // 通常是JWT token
//     );
//     // 保存用户信息到本地或全局变量中，以便之后使用
//     saveUserToStorage(user); // 自定义方法，用于保存用户到本地存储或全局变量中
//   } else {
//     // 处理登录失败的情况
//     print('Login failed');
//   }
// }

// 保存登录数据
Future<void> saveLoginState(User user, String token) async {
  final prefs = await SharedPreferences.getInstance();
  await prefs.setString('user', jsonEncode(user));
  await prefs.setString('token', token);
}

// 是否登录
Future<bool> isLoggedIn() async {
  final prefs = await SharedPreferences.getInstance();
  final user = prefs.getString('user');
  final token = prefs.getString('token');
  return user != null && token != null; // 如果user_id和token都存在，则认为已登录
}

// 获取登录Token
Future<String?> getToken() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  final token = prefs.getString('token');
  return token;
}

// 获取登录数据
Future<User?> getLoginData() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  final userStr = prefs.getString('user');
  if (userStr != null) {
    var map = jsonDecode(userStr);
    User user = User(
      id: map['id'],
      username: map['username'],
      realname: map['realname'],
      departId: map['departId'],
      email: map['email'],
    );
    return user;
  }
  return null;
}

// 清理登录数据
Future<void> clearLoginState() async {
  final prefs = await SharedPreferences.getInstance();
  await prefs.remove('user_id');
  await prefs.remove('token');
}
